we have a feature called "duplicate message detection" in exchange server to resolve this kind of issues.
There is still a chance that you will get duplicate email if the delivery of email is delayed because of the following reasons:
1) If either the internet message id or the submit time is different on the two messages, the second message will not be treated as a duplicate.
2) If the two are the same, but time interval between the arrival of the two messages is greater than 1 hour, the store cleanup task would have deleted the original entry in the deliveredTo table and the user will get duplicates.
3) If the user is moved. The deliveredTo table is per database and the information is not moved when the user's mailbox is moved.
4) In older versions of Exchange we had a problem where duplicates would occur when a message was sent to a user and a DL containing the user using OWA. When the message was submitted the store would stamp an Internet Message
Id on the outgoing message. However, since OWA submits messages with native MIME and the fact that the Internet Message Id stamped by the store on submission did not update the MIME Message Id header, the MAPI message was out of sync with the native MIME.
The message would then be bifurcated by Transport and this would result in messages with different Internet Message Ids and therefore, duplicates. We changed this in Exchange 2003 so that the store only stamps the Internet Message Id on a message if it detects
that the MIME has to be regenerated or if it is a pure MAPI message.
please refer the below link for further information.
http://blogs.technet.com/b/exchange/archive/2004/07/14/183132.aspx